package com.xy.Improve;

/**
 * @author 谢阳
 * @version 1.8.0_131
 * @date 2022/6/21 20:26
 * @description
 */
public abstract class Duck {
    // 飞行行为
    protected FlyBehavior flyBehavior;
    // 发声行为
    protected QuackBehavior quackBehavior;

    /**
     * 显示品种
     */
    abstract void display();

    /**
     * 游泳
     */
    public void swim() {
        System.out.println("所有鸭子都可以游泳...");
    }

    /**
     * 发声
     */
    public void performQuack() {
        if (quackBehavior != null) {
            quackBehavior.quack();
        }
    }

    /**
     * 飞翔
     */
    public void performFly() {
        if (flyBehavior != null) {
            flyBehavior.fly();
        }
    }

    public void setFlyBehavior(FlyBehavior flyBehavior) {
        this.flyBehavior = flyBehavior;
    }

    public void setQuackBehavior(QuackBehavior quackBehavior) {
        this.quackBehavior = quackBehavior;
    }
}
